#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e5+10;
int numset[N];
void bfs(int start,int end)
{
    // 如果起点已经是终点，直接返回0
    if (start == end) return ;

    queue<int> q;
    q.push(start);

	while (!q.empty()) 
	{
        int x = q.front();
        q.pop();

        int a,b,c;a=x+1,b=x*2,c=x-1;

        if(a<N&&numset[a]==-1)
        {
        	q.push(a);
        	numset[a]=numset[x]+1;
        }

        if(b<N&&numset[b]==-1)
        {
        	q.push(b);
        	numset[b]=numset[x]+1;
        }

        if(c>0&&numset[c]==-1)
        {
        	q.push(c);
        	numset[c]=numset[x]+1;
        }

        if(a==end||b==end||c==end)
        {
        	return;
        }
	}

}

int main()
{
	int n;cin>>n;
	while(n--)
	{
		int start,end;cin>>start>>end;
		memset(numset,-1,sizeof(numset));
		numset[start] = 0;  // 标记起点已访问
		bfs(start,end);
		cout<<numset[end]<<endl;
	}
}